package newFeature;

import java.util.stream.Stream;

/**
 * @author LiuYan
 * @date 2023/4/20
 */
public class StreamOptimization {
    public static void main(String[] args) {
        Stream.of("A", "B", "B", "C")
                .filter(s -> s.equals("B"))
                .distinct()
                .forEach(System.out::println);
        // 如果传入null会报错
        // Stream.of(null).forEach(System.out::println);

        // 使用新增ofNullable方法，这样就不会报错，但是流里面没东西
        Stream.ofNullable(null).forEach(System.out::println);

        Stream
                .iterate(0, i -> i + 1)
                .limit(20)
                .forEach(System.out::println);

        // 断言式迭代条件
        Stream
                .iterate(0, i -> i < 20, i -> i + 1)
                .forEach(System.out::println);

        // 数据截断操作，读取某个字段时截断，不得继续操作后面元素
        Stream.iterate(0,i->i+1)
                .limit(20)
                .takeWhile(i->i<10)
                .forEach(System.out::println);

        Stream.iterate(0,i->i+1)
                .limit(20)
                .dropWhile(i->i<10)
                .forEach(System.out::println);
    }
}
